public class BubbleSort {
    public static void main(String[] args) {
        //
        System.out.println("bubbleSortRes:");
//        Integer[] array = {9, 6, 3, 2, 5, 5, 1, 7, 8, 2, 4, 3};
        Integer[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        Integer[] bubbleSortRes = bubbleSort(array);
        for (int i = 0; i < bubbleSortRes.length; i++) {
            System.out.printf(bubbleSortRes[i] + ",");
        }
    }

    // bubbleSort-01
    public static Integer[] bubbleSort(Integer[] array) {
        //  n个数字，需要冒泡 n-1
        for (int i = 0; i < array.length - 1; i++) {
            // 用来标记本轮冒泡中，是否有 元素位置交换
            Boolean tag = false;
            // 每次冒泡，需要挨个比较 尚未冒泡到最后的数字
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    Integer temp = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = temp;
                    tag = true;
                }
            }

            // 如果本轮冒泡中，没有任何元素做位置交换，表示当前数据已经排好序，不用继续冒泡了
            if (!tag) {
                break;
            }
        }
        return array;
    }
}
